package com.textformat.core;

import com.textformat.core.InputAndOutput.InputFormat;
import com.textformat.core.InputAndOutput.Output;
import com.textformat.core.InputAndOutput.OutputFormat;
import com.textformat.core.InputAndOutput.Input;
import com.textformat.core.InputAndOutput.impl.InputEnum;

import java.util.UUID;

/**
 * 文本转换信息：
 * 1、任务识别码
 * 2、任务分组
 * 3、输入文本方式（控制台、txt、pdf、excel）
 * 4、输入文本格式（list（回车换行、其他符号换行）、键值对、其他复杂格式）
 * 5、输出文本格式（文本转sql、文本更换分隔符、文本替换字符串、文本）
 * 6、输出文本方式（控制台、插入数据库、txt、pdf、excel、csv、其他的格式）
 */
public class TextInFo {

    /* 任务识别码 */
    private String id;
    /* 任务分组 */
    private String group;

    /* 输入文本方式（控制台、txt、pdf、excel） */
    private Input inputType;
    private String fileName;

    /* 输入文本格式（list（回车换行、其他符号换行）、键值对、其他复杂格式） */
    private InputFormat inputFormat;

    /* 输出文本方式（控制台、插入数据库、txt、pdf、excel、csv、其他的格式） */
    private Output outputType;
    /* 输出文本格式（文本转sql、文本更换分隔符、文本替换字符串、文本） */
    private OutputFormat outputFormat;

    public TextInFo() {
        this.id = UUID.randomUUID().toString().replaceAll("-", "");
    }

    public String getId() {
        return id;
    }

    public TextInFo setId(String id) {
        this.id = id;
        return this;
    }

    public String getGroup() {
        return group;
    }

    public TextInFo setGroup(String group) {
        this.group = group;
        return this;
    }

    public Input getInputType() {
        return inputType;
    }

    public TextInFo setInputType(Input inputType) {
        this.inputType = inputType;
        return this;
    }

    public InputFormat getInputFormat() {
        return inputFormat;
    }

    public TextInFo setInputFormat(InputFormat inputFormat) {
        this.inputFormat = inputFormat;
        return this;
    }

    public Output getOutputType() {
        return outputType;
    }

    public TextInFo setOutputType(Output outputType) {
        this.outputType = outputType;
        return this;
    }

    public OutputFormat getOutputFormat() {
        return outputFormat;
    }

    public TextInFo setOutputFormat(OutputFormat outputFormat) {
        this.outputFormat = outputFormat;
        return this;
    }

    public String getFileName() {
        return fileName;
    }

    public TextInFo setFileName(String fileName) {
        this.fileName = fileName;
        return this;
    }

    @Override
    public String toString() {
        if(this.getInputType() != InputEnum.CONSOLE){
            return "{\"任务信息\":{" +
                    "\"识别码\":\"" + id +
                    "\", \"转换组\":\"" + group +
                    "\", \"输入方式\":\"" + inputType +
                    "\", \"输入格式\":\"" + inputFormat +
                    "\", \"输出方式\":\"" + outputType +
                    "\", \"输出格式\":\"" + outputFormat +
                    "\", \"文件路径\":\"" + fileName +
                    "\"}}";
        }else {
            return "{\"任务信息\":{" +
                    "\"识别码\":\"" + id +
                    "\", \"转换组\":\"" + group +
                    "\", \"输入方式\":\"" + inputType +
                    "\", \"输入格式\":\"" + inputFormat +
                    "\", \"输出方式\":\"" + outputType +
                    "\", \"输出格式\":\"" + outputFormat +
                    "\"}}";
        }

    }
}
